package projetorosalvo;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;


public class Ranking {
    //Delcarações da Interface
    private JTable tabelaRanking;
    private JButton botaoVoltar;
    private JFrame telaRanking;
    //Fim das declarações da Interface
    private String[][] values;
    private Jogo[] melhoresJogos;
    private Arquivo arquivo;
    public Ranking (){
        values = new String[10][3];
        melhoresJogos = new Jogo[10];
        adquireValues();
        iniciaComponentes();
    }

    private void adquireValues() {
        ArrayList<String> l = new ArrayList<String>();

        try {
            l = arquivo.carregarRecordes("recordes.txt");
        } catch (FileNotFoundException e) {
			System.out.println("O arquivo, por algum motivo, nao pode ser lido!");
			e.printStackTrace();
        } catch (IOException e) {
			System.out.println("O arquivo, por algum motivo, nao pode ser lido!");
			e.printStackTrace();
        }
        
        int i=0;
        for(String s: l){
        	String[] v = s.split(";");
			melhoresJogos[i] = new Jogo(Integer.parseInt(v[0]),Integer.parseInt(v[1]),Integer.parseInt(v[2]),v[3],v[4]);
        	i++;
        }
        for(i=0;i<10;i++) {
            for(int j=0;j<3;j++) {
                if(j==0){
                    values[i][j] = melhoresJogos[i].getNomeJogador();
                } else {
                    if(j==1) {
                        values[i][j] ="" + melhoresJogos[i].getPontuacaoJogador();
                    } else {
                        values[i][j] ="" +  melhoresJogos[i].getData();
                    }
                }
            }
        }
    }
    public void iniciarRanking() {
    	String[] nomeColunas = {"Nome", "Pontuacao", "Data"};
        tabelaRanking = new JTable(values,nomeColunas);
        tabelaRanking.setEnabled(false);
    }

    private void iniciaComponentes() {
        this.telaRanking = new JFrame();
        telaRanking.setSize(800,600);
        telaRanking.setResizable(false);
        telaRanking.setVisible(true);
        telaRanking.setLayout(null);
        
        tabelaRanking = new JTable();
        tabelaRanking.setEnabled(false); 
        tabelaRanking.setVisible(true);
        telaRanking.add(tabelaRanking);
        
        this.botaoVoltar = new JButton();
        botaoVoltar.setText("Voltar");
        botaoVoltar.setSize(130,30);
        botaoVoltar.setLocation(650,520);
        botaoVoltar.setEnabled(true);
        botaoVoltar.setVisible(true);
        telaRanking.add(botaoVoltar);
        
    }
    public int getMenorPontuacao(){
    	return melhoresJogos[9].getPontuacaoJogador();
    }

	public void atualizarRanking(Jogo jogo) {
		melhoresJogos[9] = jogo;
		int i=9;
		while(melhoresJogos[i].getPontuacaoJogador()>melhoresJogos[i-1].getPontuacaoJogador()){
			Jogo j = melhoresJogos[i-1];
			melhoresJogos[i-1] = melhoresJogos[i];
			melhoresJogos[i] = j;
			if(i==1){
				break;
			}
			i--;
		}
		
		try {
			arquivo.limpaRecordes();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
		for(i=0;i<10;i++){
			String linha = ""+melhoresJogos[i].getLevel()+";"+melhoresJogos[i].getVidasJogador()+";"+melhoresJogos[i].getPontuacaoJogador()+";"+melhoresJogos[i].getNomeJogador()+";"+melhoresJogos[i].getData();
			try {
				arquivo.salvarArquivo(linha);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
